import { serverApi } from '@/config/constants'

import axios from 'axios'
import { Notification, MessageBox, Message, Loading } from 'element-ui'
import store from "@/store";

// let baseUrl='http://192.168.1.29:8888/common/file/upload'

// export { baseUrl }
// 是否显示重新登录
export let isRelogin = { show: false };
export function request(config) {
	// 创建Axios实例，并进行基本参数配置
	let instance = axios.create({
		baseURL: process.env.NODE_ENV === 'production' 
			? serverApi
			: '/api',
		headers: {
			satoken: sessionStorage.getItem("satoken"),
			userId: sessionStorage.getItem("userId"),
			'Content-Type': 'application/json; charset=utf-8'
		},
		timeout: 200000,
	})

	// 配置请求和响应的拦截
	instance.interceptors.request.use(config => {
		// 1. 如用于整理给服务器的数据
		// 2. 如每次发送网络请求时，在界面中进行提示
		// 3. 如token等必须携带的信息检测
		// console.log(config);
		return config
	}, error => {
		return error
	})

	instance.interceptors.response.use(response => {
		if (response.data.code == 402) {
			if (!isRelogin.show) {
				isRelogin.show = true;
				Message.error(response.data.msg);
				sessionStorage.removeItem("satoken")
				sessionStorage.removeItem("user")
				store.commit('logout')
				setTimeout(function () {
					window.location.href = "/";
				}, 1000);
			}
		}

		return response.data
	}, error => {
		// alert(error.code);
		if (error.code == 401) {
			//登录失效或者未登录，给出提示 
			alert("请登录后操作！")
		} else {
			Message.error(error.msg || error.message);
		}
		return Promise.reject(error)
	})
	// 调用Axios实例，发送真正的网络请求，并返回。
	return instance(config)
}
